﻿namespace Brjnk.CoordinateSystem2D.Layers
{
    using System.Windows;

    /// <summary>
    /// Vrstva ve 2D souřadnicovém prostoru Area2D
    /// </summary>
    public interface ILayer : System.ComponentModel.INotifyPropertyChanged
    {
        FrameworkElement Content { get; }

        /// <summary>
        /// Obsah, který se zobrazí při vyvolání kontextového menu
        /// </summary>
        FrameworkElement MenuContent { get; }

        /// <summary>
        /// Obsah, který se zobrazí při ponechání ukazatele myši na místě (jedná se o obdobu tooltipu)
        /// </summary>
        FrameworkElement InfoContent { get; }

        void SetContext(LayerContext context, ViewInfoBase view);

        /// <summary>
        /// Kliknutí levého tlačítka myši
        /// </summary>
        void MouseClick(MousePosition mousePosition, bool ctrlPressed);

        /// <summary>
        /// Změna pozice myši
        /// </summary>
        void MousePositionChanged(MouseMoveArgs args, bool ctrlPressed);

        /// <summary>
        /// Posun myši za současného držení tlačítka CTRL a levého tlačítka myši.
        /// </summary>
        void MouseMove(MouseMoveArgs args);

        double Opacity { get; }

        bool Visible { get; }
    }
}